import type { PiniaPluginContext } from 'pinia'
// 定义常量key  方便维护
const STORAGE_KEY_PINIA = 'PINIA_STORE'
export default (context: PiniaPluginContext) => {
    // console.log('context', context);  //因为pinia是分多个小仓库，而不是和Vuex一样分为多个模块，
    // 所以这里context是分批次把每个仓库都返给你(会在控制太打印多次)，所以要用其stroe.$id进行分开存储

    // 定义常量key
    const key = `${STORAGE_KEY_PINIA}_${context.store.$id}`

    // 存  在离开页面之前同步一下仓库数据，将数据存在localStorage
    window.addEventListener('beforeunload', () => {
        const state = context.store.$state
        const stringify = JSON.stringify(state)
        localStorage.setItem(key, stringify)
    })

    // 取
    const savedState = localStorage.getItem(key)
    if (savedState) {
        try {
            const parseState = JSON.parse(savedState)
            context.store.$patch(parseState)
        } catch (error) {
            console.error('Failed to parse saved state', error)
        }
    }
}
